In many computer implementations, it is desirable to be able to monitor a service that is being provided by one or more hardware and software components in a computing environment. Conventional approaches to the problem typically employ multiple agents deployed at each component, which collect information related to the service and/or deployment of said service. In one possible approach, generic agents collect all types of information and provide the information to a centralized process. The agents relay all the collected information to the centralized process that determines what data, if any, is useful to determine the state of the process being monitored. Often, much more information is collected than is needed. Accordingly, the centralized process must sort through the output of each generic agent to determine which data is relevant in order to produce reports and/or display status.
In another possible approach, a special purpose agent may be configured to monitor each component. In these approaches, the agent must be changed or replaced if growth or change to the service necessitates the need for different status information. Agent change or replacement in such approaches, however, can result in lost time and productivity as systems are brought off line, updated, tested and debugged before being restored to service.